package com.ideal.manage.esms.repository.programme;

import com.ideal.manage.esms.bean.project.ParameterInfo;
import com.ideal.manage.esms.repository.framework.BaseRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;


public interface ParameterInfoRepository extends BaseRepository<ParameterInfo, String> {

    /**
     * 找到所有的电池单体对应温度列表
     *
     * @return
     */
    @Query("select p from ParameterInfo p where p.isValid=1 and p.objName=5 and p.objType=4")
    List<ParameterInfo> findParameterInfoJustTemperature();

    @Query("select p.code from ParameterInfo p where p.isValid=1")
    List<ParameterInfo> findCode();

    /**
     * 根据设备类型找到所有要显示的数据
     *
     * @param parameterType 设备类型
     * @return
     */
    @Query("select p from ParameterInfo p where p.isValid=1 and p.objName=?1 and p.isShow=1 ")
    List<ParameterInfo> findListByTypeForMonitor(Integer parameterType);

    /**
     * 根据 名称 对象名称 设备应用 是否展示 找到通用的测点参数
     *
     * @param name  名称
     * @param obj_name  对象名称
     * @param obj_type  设备类型
     * @param is_show   是否展示
     * @return
     */
    @Query("select p from ParameterInfo p where p.name=?1 and p.objName=?2 and p.objType=?3 and p.isShow=?4 and p.isValid=1")
    ParameterInfo findParameterInfoByNameAndType(String name, int obj_name, int obj_type, int is_show);

    /**
     * 根据 名称 对象名称 设备应用 找到通用的测点参数
     *
     * @param name  名称
     * @param obj_name  对象名称
     * @param obj_type  设备类型
     * @return
     */
    @Query("select p from ParameterInfo p where p.name=?1 and p.objName=?2 and p.objType=?3 and p.isValid=1")
    ParameterInfo findParameterInfoByNameAndObjType(String name, int obj_name, int obj_type);

    /**
     * 根据 名称 对象名称 设备应用 是否展示 找到通用的测点参数
     *
     * @param name  名称
     * @param objType  所属类别
     * @param objName  使用对象
     * @return
     */
    @Query("select p from ParameterInfo p where p.name=?1 and p.objType=?2 and p.objName=?3 and p.isValid=1 and p.isShow=1")
    ParameterInfo findOneByNameAndTypeAndObjName(String name, int objType, int objName);

    @Query("select p.code from ParameterInfo p where p.isValid=1")
    List<ParameterInfo> findAllDataByCodeAndisValid();

    @Query("select p from ParameterInfo p where p.objType=?1 and p.objName=?2 and p.isValid=1")
    List<ParameterInfo> findByTypeAndObjName(int objType,int objName);

    @Query("select p from ParameterInfo p where p.name=?1 and p.esAggsMethod=?2 and p.isValid=1")
    ParameterInfo findDataPython5(String name,Long method);

    @Query("select p from ParameterInfo p where p.isValid=1")
    List<ParameterInfo> findByIsValid();
    @Query("select p from ParameterInfo p where p.isValid=1 and p.objName=?1 and p.isShow = 1")
    List<ParameterInfo> findAllByProject(int i);
}
